home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Technotools
/
Technotools (Chestnut CD-ROM)(1993).ISO
/
lantools
/
an108x
/
listnlms.c
< prev
next >
Wrap
Text File
|
1991-09-12
|
2KB
|
79 lines
/****************************************************************************
* LISTNLMS.C
* Illustrate linked list traversal with NetWare internal debugger
* Builds list of NLMs in SYS:SYSTEM
*
* Morgan Adair
* 7/11/91
****************************************************************************/
#include <stdio.h>
#include <nwdir.h>
#include <string.h>
#include <malloc.h>
#include <conio.h>
#include <errno.h>
typedef struct filename {
char fname[NAME_MAX+1]; /* 12 + 1 bytes */
struct filename *next;
} FILE_NAME;
void CleanUp(void);
DIR *sysSystem;
FILE_NAME *fileList = NULL;
void main(void)
{
DIR *dirEntry;
FILE_NAME *newNode;
int numFiles = 0;
atexit(CleanUp);
sysSystem = opendir("SYS:SYSTEM\\*.NLM");
if (!sysSystem) {
printf("Unable to open SYS:SYSTEM");
exit();
}
/* just for fun, break into the debugger here */
Breakpoint(1);
do { /* while getting directory entries */
dirEntry = readdir(sysSystem);
if (dirEntry) {
newNode = (FILE_NAME *)malloc(sizeof(FILE_NAME));
if (!newNode) {
printf("Out of memory");
exit();
}
numFiles++;
strcpy(newNode->fname, dirEntry->d_name);
newNode->next = fileList;
fileList = newNode;
/* display file name, just to keep up the appearance that
we're doing something useful (maybe if we sorted the
file names alphabetically . . .) */
printf("%-20s", newNode->fname);
}
} while (dirEntry);
Breakpoint(2);
}
void CleanUp(void)
{
FILE_NAME *newNode;
closedir(sysSystem);
while (fileList) {
newNode = fileList;
fileList = fileList->next;
free(newNode);
}
}